home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vcdmath.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  12KB  |  234 lines

  1. /*  VCDmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of data type "dComplex" (complex double)
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VCDMATH_H
  12. #define __VCDMATH_H
  13.  
  14. #ifndef __VCDSTD_H 
  15. #include <VCDstd.h>
  16. #endif
  17.  
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /************************* Comparisons ****************************/
  24.  
  25. ui   __vf   VCD_cmp_eq0( cdVector Y, cdVector X, ui size );
  26. ui   __vf   VCD_cmp_ne0( cdVector Y, cdVector X, ui size );
  27. ui   __vf   VCD_cmp_eqC( cdVector Y, cdVector X, ui size, dComplex C );
  28. ui   __vf   VCD_cmp_neC( cdVector Y, cdVector X, ui size, dComplex C );
  29. ui   __vf   VCD_cmp_eqV( cdVector Z, cdVector X, cdVector Y, ui size );
  30. ui   __vf   VCD_cmp_neV( cdVector Z, cdVector X, cdVector Y, ui size );
  31. ui   __vf   VCD_cmp_eq0ind( uiVector Ind, cdVector X, ui size );
  32. ui   __vf   VCD_cmp_ne0ind( uiVector Ind, cdVector X, ui size );
  33. ui   __vf   VCD_cmp_eqCind( uiVector Ind, cdVector X, ui size, dComplex C );
  34. ui   __vf   VCD_cmp_neCind( uiVector Ind, cdVector X, ui size, dComplex C );
  35. ui   __vf   VCD_cmp_eqVind( uiVector Ind, cdVector X, cdVector Y, ui size );
  36. ui   __vf   VCD_cmp_neVind( uiVector Ind, cdVector X, cdVector Y, ui size );
  37.  
  38.  
  39. /********************  Standard Arithmetics   ***************************/
  40.  
  41. void  __vf   VCD_limit(  cdVector Y, cdVector X, ui size, dComplex Min,
  42.                                                           dComplex Max );
  43. void  __vf   VCD_flush0( cdVector Y, cdVector X, ui size, dComplex AbsMin );
  44. void  __vf   VCD_flushInv( cdVector Y, cdVector X, ui size, dComplex AbsMin );
  45.  
  46. void  __vf   VCDx_equV( cdVector Y, cdVector X, ui size,
  47.                         dComplex A, dComplex B );
  48. void  __vf   VCD_addC(  cdVector Y, cdVector X, ui size, dComplex C );
  49. void  __vf   VCD_subC(  cdVector Y, cdVector X, ui size, dComplex C );
  50. void  __vf   VCD_subrC( cdVector Y, cdVector X, ui size, dComplex C );
  51. void  __vf   VCD_mulC(  cdVector Y, cdVector X, ui size, dComplex C );
  52. void  __vf   VCD_divC(  cdVector Y, cdVector X, ui size, dComplex C );
  53. void  __vf   VCD_divrC( cdVector Y, cdVector X, ui size, dComplex C );
  54. void  __vf   VCDx_divrC( cdVector Y, cdVector X, ui size,
  55.                          dComplex A, dComplex B, dComplex C );
  56.  
  57. void  __vf   VCD_addReC(  cdVector Y, cdVector X, ui size, double CRe );
  58. void  __vf   VCD_subReC(  cdVector Y, cdVector X, ui size, double CRe );
  59. void  __vf   VCD_subrReC( cdVector Y, cdVector X, ui size, double CRe );
  60. void  __vf   VCD_mulReC(  cdVector Y, cdVector X, ui size, double CRe );
  61. void  __vf   VCD_divReC(  cdVector Y, cdVector X, ui size, double CRe );
  62. void  __vf   VCD_divrReC( cdVector Y, cdVector X, ui size, double CRe );
  63.  
  64. void  __vf   VCD_addV(  cdVector Z, cdVector X, cdVector Y, ui size );
  65. void  __vf   VCD_subV(  cdVector Z, cdVector X, cdVector Y, ui size );
  66. void  __vf   VCD_subrV( cdVector Z, cdVector X, cdVector Y, ui size );
  67. void  __vf   VCD_mulV(  cdVector Z, cdVector X, cdVector Y, ui size );
  68. void  __vf   VCD_divV(  cdVector Z, cdVector X, cdVector Y, ui size );
  69. void  __vf   VCD_divrV( cdVector Z, cdVector X, cdVector Y, ui size );
  70.  
  71. void  __vf   VCD_addReV(  cdVector Z, cdVector X, dVector Y, ui size );
  72. void  __vf   VCD_subReV(  cdVector Z, cdVector X, dVector Y, ui size );
  73. void  __vf   VCD_subrReV( cdVector Z, cdVector X, dVector Y, ui size );
  74. void  __vf   VCD_mulReV(  cdVector Z, cdVector X, dVector Y, ui size );
  75. void  __vf   VCD_divReV(  cdVector Z, cdVector X, dVector Y, ui size );
  76. void  __vf   VCD_divrReV( cdVector Z, cdVector X, dVector Y, ui size );
  77.  
  78. void  __vf   VCDx_addV(  cdVector Z, cdVector X, cdVector Y, ui size,
  79.                          dComplex A, dComplex B );
  80. void  __vf   VCDx_subV(  cdVector Z, cdVector X, cdVector Y, ui size,
  81.                          dComplex A, dComplex B );
  82. void  __vf   VCDx_subrV( cdVector Z, cdVector X, cdVector Y, ui size,
  83.                          dComplex A, dComplex B );
  84. void  __vf   VCDx_mulV(  cdVector Z, cdVector X, cdVector Y, ui size,
  85.                          dComplex A, dComplex B );
  86. void  __vf   VCDx_divV(  cdVector Z, cdVector X, cdVector Y, ui size,
  87.                          dComplex A, dComplex B );
  88. void  __vf   VCDx_divrV( cdVector Z, cdVector X, cdVector Y, ui size,
  89.                          dComplex A, dComplex B );
  90.  
  91. void  __vf   VCDx_addReV(  cdVector Z, cdVector X, dVector Y, ui size,
  92.                            dComplex A, dComplex B );
  93. void  __vf   VCDx_subReV(  cdVector Z, cdVector X, dVector Y, ui size,
  94.                            dComplex A, dComplex B );
  95. void  __vf   VCDx_subrReV( cdVector Z, cdVector X, dVector Y, ui size,
  96.                            dComplex A, dComplex B );
  97. void  __vf   VCDx_mulReV(  cdVector Z, cdVector X, dVector Y, ui size,
  98.                            dComplex A, dComplex B );
  99. void  __vf   VCDx_divReV(  cdVector Z, cdVector X, dVector Y, ui size,
  100.                            dComplex A, dComplex B );
  101. void  __vf   VCDx_divrReV( cdVector Z, cdVector X, dVector Y, ui size,
  102.                            dComplex A, dComplex B );
  103.  
  104. void __vf VCD_lincomb( cdVector Z, cdVector X, cdVector Y, ui size,
  105.                        dComplex CX, dComplex CY );  /* Z[i]=CX*X[i]+CY*Y[i] */
  106.  
  107. /******************** Accumulation (Y += X) ******************************/
  108.  
  109. void __vf VCD_accV(   cdVector Y, cdVector  X, ui size );
  110. void __vf VCD_accVCF( cdVector Y, cfVector  X, ui size );
  111.  
  112.  
  113. /***************** Functions of a sub-set of elements  ********************/
  114.  
  115. void  __vf  VCD_subvector_equC(  cdVector Y, ui subsiz, unsigned samp,
  116.                                  dComplex C );
  117. void  __vf  VCD_subvector_equV(  cdVector Y, ui subsiz, unsigned samp,
  118.                                  cdVector X );
  119.  
  120. void  __vf  VCD_subvector_addC(  cdVector Y, ui subsiz, unsigned samp,
  121.                                  dComplex C );
  122. void  __vf  VCD_subvector_subC(  cdVector Y, ui subsiz, unsigned samp,
  123.                                  dComplex C );
  124. void  __vf  VCD_subvector_subrC( cdVector Y, ui subsiz, unsigned samp,
  125.                                  dComplex C );
  126. void  __vf  VCD_subvector_mulC(  cdVector Y, ui subsiz, unsigned samp,
  127.                                  dComplex C );
  128. void  __vf  VCD_subvector_divC(  cdVector Y, ui subsiz, unsigned samp,
  129.                                  dComplex C );
  130. void  __vf  VCD_subvector_divrC( cdVector Y, ui subsiz, unsigned samp,
  131.                                  dComplex C );
  132.  
  133. void  __vf  VCD_subvector_addV(  cdVector Y, ui subsiz, unsigned samp,
  134.                                  cdVector X );
  135. void  __vf  VCD_subvector_subV(  cdVector Y, ui subsiz, unsigned samp,
  136.                                  cdVector X );
  137. void  __vf  VCD_subvector_subrV( cdVector Y, ui subsiz, unsigned samp,
  138.                                  cdVector X );
  139. void  __vf  VCD_subvector_mulV(  cdVector Y, ui subsiz, unsigned samp,
  140.                                  cdVector X );
  141. void  __vf  VCD_subvector_divV(  cdVector Y, ui subsiz, unsigned samp,
  142.                                  cdVector X );
  143. void  __vf  VCD_subvector_divrV( cdVector Y, ui subsiz, unsigned samp,
  144.                                  cdVector X );
  145.  
  146.  
  147. /********************  Mathematical Functions ***************************/
  148.  
  149. int __vf   VCD_neg(  cdVector Y, cdVector X, ui size );
  150. int __vf   VCD_conj( cdVector Y, cdVector X, ui size );
  151. int __vf   VCD_abs(   dVector Y, cdVector X, ui size );
  152. int __vf   VCD_inv(  cdVector Y, cdVector X, ui size );
  153. int __vf   VCDx_inv( cdVector Y, cdVector X, ui size, dComplex A, dComplex B );
  154.  
  155. int  __vf   VCD_square(  cdVector Y, cdVector X, ui size );
  156. int  __vf   VCDx_square( cdVector Y, cdVector X, ui size,
  157.                          dComplex A, dComplex B );
  158. int  __vf   VCD_cubic(   cdVector Y, cdVector X, ui size );
  159. int  __vf   VCDx_cubic(  cdVector Y, cdVector X, ui size,
  160.                          dComplex A, dComplex B );
  161. int  __vf   VCD_quartic( cdVector Y, cdVector X, ui size );
  162. int  __vf   VCDx_quartic( cdVector Y, cdVector X, ui size,
  163.